"""
API 路由依赖项模块
提供 API 路由中使用的依赖注入函数
"""
from fastapi import Depends
from sqlalchemy.orm import Session
from app.core.database import get_db
from app.models.user import User
from app.utils.dependencies import get_current_user_id
from app.utils.exceptions import NotFoundException, ForbiddenException


def get_current_user(
    user_id: int = Depends(get_current_user_id),
    db: Session = Depends(get_db)
):
    """
    获取当前认证用户的完整用户对象
    在获取用户ID后，进一步验证用户存在性和激活状态
    
    Args:
        user_id: 从令牌中提取的用户ID
        db: 数据库会话
        
    Returns:
        User: 当前用户对象
        
    Raises:
        NotFoundException: 用户不存在时抛出
        ForbiddenException: 用户被禁用时抛出
    """
    user = db.query(User).filter(User.id == user_id).first()
    if not user:
        raise NotFoundException("用户不存在")
    if not user.is_active:
        raise ForbiddenException("用户已被禁用")
    return user

